﻿#region Header

/*
Remote views based on linq
By

Pascal Hauser 
Dipl. Ing. in Informatik, Hochschule für Technik Rapperswil, 2006
Master Thesis, Hochschule für Technik Rapperswil, 2008-2010

and

Raphael Gfeller
Dipl. Ing. in Informatik, Hochschule für Technik Rapperswil, 2006
Master Thesis, Hochschule für Technik Rapperswil, 2008-2010

*/

#endregion

#region Usings

using System;

#endregion

namespace Utils {
	/// <summary>
	/// Interface for a process step of a process chain
	/// </summary>
	public interface IProcessStep {
		#region Public Properties

		/// <summary>
		/// Process step implementation should check if it can process the given
		/// object.
		/// </summary>
		/// <param name="o"></param>
		/// <returns></returns>
		bool CanProcessItem(Object o);

		/// <summary>
		/// The actual processing of the given object.
		/// </summary>
		/// <param name="o"></param>
		void ProcessItem(Object o);

		#endregion

		#region Public Methods

		/// <summary>
		/// Returns the next step in the chain.
		/// </summary>
		/// <returns></returns>
		IProcessStep GetNextStep();

		#endregion
	}
}